"""列表推导式
"""
lst = []
for i in range(1, 15):
    lst.append(i)
print(lst)
# 换成列表推导式
lst = [i for i in range(1, 15)]
print(lst)
lst = ['编号{}'.format(i) for i in range(1, 15)]
print(lst)
lst = [i for i in range(1, 15) if i % 2 == 0] # 添加判断条件
print(lst)
# 生成器表达式
gen = (i for i in range(10))
print(gen) # <generator object <genexpr> at 0x00000000023E7D48>
for i in gen:
    print(i)


"""生成器和列表表达式的区别?
1. 列表推导式比较耗内存. ⼀次性加载. 生成器表达式几乎不占用内存. 使用的时候才分配和使用内存
2. 得到的值不⼀样. 列表推导式得到的是⼀个列表. 生成器表达式获取的是⼀个生成器
"""

"""字典推导式
"""
lst1 = ['name', 'age']
lst2 = ['sn', 22]
dic = {lst1[i]:lst2[i] for i in range(len(lst1))}
print(dic) # {'name': 'sn', 'age': 22}


"""集合推导式
集合推导式可以帮我们直接⽣成⼀个集合. 集合的特点: ⽆序, 不重复. 所以集合推导式⾃带去重功能
"""
lst = [1, -1, 8, -8, 12]
# 绝对值去重
s = {abs(i) for i in lst}
print(s) # {8, 1, 12}